package com.enjoyor.soa.traffic.api.service.dubbo.bigdata;

import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

import java.util.Date;
import java.util.List;

/**
 * 首次入城车分析服务
 */
public interface DubboAnalyzeFirstIntegeroService {

	/**
	 * 对首次入城车辆进行分析并获取分页结果
	 *
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param poIntegers 经过区域，以数组表示的点位集合
	 * @param startDay 分析起始日期
	 * @param endDay 分析截止日期
	 * @param includeLocal 是否包含本地车辆
	 * @param page 分页
	 * @return Page &lt; FirstIntegeroVehicleDto &gt; ：包含首次入城车信息 的分页集合, 其中不含 FirstIntegeroTravelDto
	 */
	public ResultPojo analyzeFirstIntoVehicle(String token, String licenseType, String licenseNum, List<String> poIntegers, Date startDay, Date endDay, boolean includeLocal, Page page);

	/**
	 * 查询特定首次入城车辆 的行驶信息
	 * @param token
	 * @param licenseType (非空)
	 * @param licenseNum (非空)
	 * @param startDay (非空)
	 * @param endDay (非空)
	 * @param page  (非空,page.totalCount 非空)
	 * @return
	 */
	public ResultPojo analyzeFirstIntoTravel(String token, String licenseType, String licenseNum,  Date startDay, Date endDay, Page page);
	public ResultPojo analyzeFirstIntoTravel(String token, String licenseType, String licenseNum, List<String> poIntegers,  Date startDay, Date endDay, Page page);

	/**
	 * 导出对首次入城车的分析结果
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param poIntegers 经过区域，以数组表示的点位集合
	 * @param startDay 分析起始日期
	 * @param endDay 分析截止日期
	 * @param includeLocal 是否包含本地车辆
	 * @param startIndex 导出起始数据，默认 1
	 * @param endIndex 导出起始数据，默认 5000
	 * @return List &lt; FirstIntegeroVehicle &gt; ：包含首次入城车信息 的集合
	 */
	public ResultPojo expFirstIntoVehicle(String token, String licenseType, String licenseNum, List<String> poIntegers, Date startDay, Date endDay, boolean includeLocal);
	public ResultPojo expFirstIntoVehicle(String token, String licenseType, String licenseNum, List<String> poIntegers, Date startDay, Date endDay, boolean includeLocal,int startIndex,int endIndex);

	/**
	 * 首次入城车的分析结果 总记录数
	 * @param token
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param poIntegers 经过区域，以数组表示的点位集合
	 * @param startDay 分析起始日期
	 * @param endDay 分析截止日期
	 * @param includeLocal 是否包含本地车辆
	 * @return 总记录数
	 */
	public ResultPojo countFirstIntoVehicle(String token, String licenseType, String licenseNum, List<String> poIntegers, Date startDay, Date endDay, boolean includeLocal);


	//新接口

	/**
	 * 对首次入城车辆进行分析并获取结果
	 *
	 * @param licenseType  号牌类型
	 * @param licenseNum   号牌号码
	 * @param points       经过区域，以数组表示的点位集合
	 * @param startDay     分析起始日期
	 * @param endDay       分析截止日期
	 * @param includeLocal 是否包含本地车辆,0外地车1是本地车
	 * @param page         页码
	 * @return
	 */
	ResultPojo getFirstIntoVehicle(String token, String licenseType, String licenseNum, List<String> points, String startDay,
							 String endDay, String includeLocal, Page page);

	/**
	 * 导出对首次入城车的分析结果
	 *
	 * @param licenseType  号牌类型
	 * @param licenseNum   号牌号码
	 * @param points       经过区域，以数组表示的点位集合
	 * @param startDay     分析起始日期
	 * @param endDay       分析截止日期
	 * @param includeLocal 是否包含本地车辆,0外地车1是本地车
	 * @return  List<FirstIntoCityVehicleDto>
	 */
	ResultPojo expFirstIntoVehicle( String token, String licenseType, String licenseNum, List<String> points, String startDay,
													  String endDay, String includeLocal, int startData, int endData);

}
